import { ILoadMapTypeAll } from '@/common';
import { ManageCommonAPI } from '@/pages/type';
import { getLevelFirstJson, getLevelZeroJson, getSelectDataCommon, getSelectDataMapList, getTenantID } from '@/utils';
import { handleDutySearchList } from '../../ContractManage/mconfig/useMyUtil';
import moment from 'moment';

const getSearchList = (
  loadMdicMapList: Record<string, any>,
  queryTypeObj: Record<string, any>,
  oppositeList: Record<string, any>[],
  pageInfo: Record<string, any> | null,
): ManageCommonAPI.ISearchList => {
  const stateSearch: boolean = pageInfo?.stateSearch ? true : false; //是否显示状态搜索框

  let stateList: any[] = []; //处理审核状态
  if (stateSearch) {
    loadMdicMapList?.[`${getTenantID()}${ILoadMapTypeAll.CONTRACT_STATE}`]?.forEach((item: any) => {
      if (pageInfo?.state?.includes(item?.id)) {
        stateList?.push({
          name: item?.name,
          value: item?.id,
        });
      }
    });
  }

  // 支付方式
  const payStyleList = getSelectDataCommon(loadMdicMapList?.[`${getTenantID()}${ILoadMapTypeAll.PAYMENT_STYLE}`], 'name', 'id');

  // 合同主体
  const opposUserList = getSelectDataCommon(oppositeList, 'oppositeName', 'id');

  /** 采购方式 */
  const procureRealList = getSelectDataMapList(loadMdicMapList?.[`${getTenantID()}${ILoadMapTypeAll.PURCHASE_METHOD}`], 'name', 'id', true);

  // 作废类型
  const cancelTypeList = getSelectDataCommon(loadMdicMapList?.[`${getTenantID()}${ILoadMapTypeAll.CONTRACT_CANCELTYPE}`], 'name', 'id');

  /** 合同类型 */
  const businessTypeList = getSelectDataMapList(loadMdicMapList?.[`${getTenantID()}${ILoadMapTypeAll.CONTRACT_TYPE}`], 'name', 'id', true);

  /**币种 */
  const currencyTypeList = getSelectDataMapList(loadMdicMapList?.[`${getTenantID()}${ILoadMapTypeAll.CONTRACT_CURRENCYTYPE}`], 'name', 'id', true);

  let orgDeptList: any[] = [];

  if (queryTypeObj?.params == 'all') {
    orgDeptList = getLevelZeroJson();
  } else if (queryTypeObj?.params == 'companyID') {
    orgDeptList = getLevelZeroJson();
  } else if (queryTypeObj?.params == 'departmentID') {
    orgDeptList = getLevelFirstJson();
  } else if (queryTypeObj?.params == 'userID') {
    orgDeptList = getLevelFirstJson();
  }

  /** 处理组织机构数据 */
  const dutyIdList = handleDutySearchList(orgDeptList, 'text', 'id');

  return [
    {
      name: 'departmentID',
      placeholder: '申请部门/单位',
      label: '申请部门/单位',
      componentType: 'TreeSelect',
      treeCheckable: true,
      dataSource: dutyIdList,
      allowClear: true,
      md: 6,
      sm: 24,
      whetherSenior: false,
      searchParams: {
        fieldType: 'String',
        fieldParam: 0,
        fieldUse: 0,
        searchType: 0,
        seq: 0,
      },
    },
    {
      name: 'capitalDir',
      placeholder: '资金流向',
      label: '资金流向',
      componentType: 'Select',
      allowClear: false,
      dataSource: [
        {
          value: '0',
          name: '付款',
        },
        {
          value: '1',
          name: '收款',
        },
        {
          value: '2',
          name: '无金额',
        },
      ],
      initialValue: '0',
      md: 4,
      sm: 24,
      whetherSenior: false,
      searchParams: {
        fieldType: 'Integer',
        fieldParam: 1,
        fieldUse: 0,
        searchType: 1,
        seq: 0,
      },
    },
    {
      name: 'currencyType',
      placeholder: '币种',
      label: '币种',
      componentType: 'Select',
      allowClear: false,
      dataSource: currencyTypeList,
      initialValue: '100123121000',
      md: 4,
      sm: 24,
      whetherSenior: false,
      searchParams: {
        fieldType: 'String',
        fieldParam: 1,
        fieldUse: 0,
        searchType: 1,
        seq: 0,
      },
    },
    {
      name: 'businessType',
      placeholder: '合同类型',
      label: '合同类型',
      componentType: 'TreeSelect',
      allowClear: true,
      dataSource: businessTypeList,
      md: 4,
      sm: 24,
      whetherSenior: false,
      searchParams: {
        fieldType: 'String',
        fieldParam: 1,
        fieldUse: 0,
        searchType: 1,
        seq: 0,
      },
    },
    // {
    //   name: 'state',
    //   placeholder: '合同状态',
    //   label: '合同状态',
    //   componentType: stateSearch ? 'Select' : 'QueryParams',
    //   mode:'multiple',
    //   allowClear: true,
    //   dataSource: stateList,
    //   md: 4,
    //   sm: 24,
    //   whetherSenior: false,
    //   searchParams: {
    //     fieldType: 'String',
    //     fieldParam: 1,
    //     fieldUse: 0,
    //     searchType: 2,
    //     seq: 0,
    //   },
    // },
    {
      name: 'realTime',
      placeholder: '签订时间',
      label: '签订时间',
      componentType: 'RangePicker',
      allowClear: true,
      md: 6,
      sm: 24,
      whetherSenior: false,
      initialValue: [moment().startOf('year'), moment()],
      // ranges={{
      //   本年: [moment().startOf('year'), moment()],
      //   近三年: [moment().subtract(3, 'years').startOf('year'), moment()],
      //   近五年: [moment().subtract(5, 'years').startOf('year'), moment()],
      // }},
      ranges: {
        本年: [moment().startOf('year'), moment()],
        近三年: [moment().subtract(3, 'years').startOf('year'), moment()],
        近五年: [moment().subtract(5, 'years').startOf('year'), moment()],
      },
      searchParams: {
        fieldType: 'DateRange',
        fieldParam: 0,
        fieldUse: 0,
        isSearch: 0,
        searchType: 0,
        seq: 0,
        rangeName: ['startTime', 'endTime'],
      },
    },
    // {
    //   name: 'contractName',
    //   placeholder: '合同名称',
    //   label: '合同名称',
    //   componentType: 'Input',
    //   allowClear: true,
    //   md: 4,
    //   sm: 24,
    //   whetherSenior: false,
    //   searchParams: {
    //     fieldType: 'String',
    //     fieldParam: 0,
    //     fieldUse: 0,
    //     searchType: 0,
    //     seq: 0,
    //   },
    // },
    // {
    //   name: 'contractCode',
    //   placeholder: '合同编号',
    //   label: '合同编号',
    //   componentType: 'Input',
    //   allowClear: true,
    //   md: 4,
    //   sm: 24,
    //   whetherSenior: false,
    //   searchParams: {
    //     fieldType: 'String',
    //     fieldParam: 0,
    //     fieldUse: 0,
    //     searchType: 0,
    //     seq: 0,
    //   },
    // },
    //     {
    //       name: 'recordFlag',
    //       placeholder: '是否补录',
    //       label: '是否补录',
    //       componentType: 'Select',
    //       allowClear: true,
    //       dataSource: [
    //         {
    //           value: '0',
    //           name: '否',
    //         },
    //         {
    //           value: '1',
    //           name: '是',
    //         },
    //       ],
    //       md: 4,
    //       sm: 24,
    //       whetherSenior: true,
    //       searchParams: {
    //         fieldType: 'Integer',
    //         fieldParam: 1,
    //         fieldUse: 0,
    //         searchType: 1,
    //         seq: 0,
    //       },
    //     },

    //     {
    //       name: 'procureReal',
    //       placeholder: '采购方式',
    //       label: '采购方式',
    //       componentType: 'TreeSelect',
    //       allowClear: true,
    //       dataSource: procureRealList,
    //       md: 4,
    //       sm: 24,
    //       whetherSenior: true,
    //       searchParams: {
    //         fieldType: 'String',
    //         fieldParam: 1,
    //         fieldUse: 0,
    //         searchType: 1,
    //         seq: 0,
    //       },
    //     },
    //     {
    //       name: 'sumInTax',
    //       placeholder: '合同金额',
    //       label: '合同金额',
    //       componentType: 'NumberRange',
    //       allowClear: true,
    //       md: 6,
    //       sm: 24,
    //       whetherSenior: false,
    //       searchParams: {
    //         fieldType: 'BigDecimal',
    //         fieldParam: 0,
    //         fieldUse: 0,
    //         isSearch: 0,
    //         searchType: 1,
    //         seq: 0,
    //       },
    //     },

    //     {
    //       name: 'supplierName',
    //       placeholder: '相对方',
    //       label: '相对方',
    //       componentType: 'Input',
    //       allowClear: true,
    //       md: 4,
    //       sm: 24,
    //       whetherSenior: true,
    //       searchParams: {
    //         fieldType: 'String',
    //         fieldParam: 0,
    //         fieldUse: 0,
    //         searchType: 0,
    //         seq: 0,
    //       },
    //     },
    //     {
    //       name: 'payStyle',
    //       placeholder: '支付方式',
    //       label: '支付方式',
    //       componentType: 'Select',
    //       allowClear: true,
    //       dataSource: payStyleList,
    //       md: 4,
    //       sm: 24,
    //       whetherSenior: true,
    //       searchParams: {
    //         fieldType: 'String',
    //         fieldParam: 1,
    //         fieldUse: 0,
    //         searchType: 1,
    //         seq: 0,
    //       },
    //     },
    //     {
    //       name: 'oppositeID',
    //       placeholder: '合同主体',
    //       label: '合同主体',
    //       componentType: 'Select',
    //       allowClear: true,
    //       dataSource: opposUserList,
    //       md: 4,
    //       sm: 24,
    //       whetherSenior: true,
    //       searchParams: {
    //         fieldType: 'String',
    //         fieldParam: 1,
    //         fieldUse: 0,
    //         searchType: 1,
    //         seq: 0,
    //       },
    //     },

    //     {
    //       name: 'purchProjectName',
    //       placeholder: '采购项目名称',
    //       label: '采购项目名称',
    //       componentType: 'Input',
    //       allowClear: true,
    //       md: 4,
    //       sm: 24,
    //       whetherSenior: true,
    //       searchParams: {
    //         fieldType: 'String',
    //         fieldParam: 0,
    //         fieldUse: 0,
    //         searchType: 0,
    //         seq: 0,
    //       },
    //     },
    //     {
    //       name: 'projectName',
    //       placeholder: '资金来源',
    //       label: '资金来源',
    //       componentType: 'Input',
    //       allowClear: true,
    //       md: 4,
    //       sm: 24,
    //       whetherSenior: true,
    //       searchParams: {
    //         fieldType: 'String',
    //         fieldParam: 0,
    //         fieldUse: 0,
    //         searchType: 0,
    //         seq: 0,
    //       },
    //     },
    //     {
    //       name: 'majorFlag',
    //       placeholder: '是否重大（要）合同',
    //       label: '是否重大（要）合同',
    //       componentType: 'Select',
    //       allowClear: true,
    //       dataSource: [
    //         {
    //           value: '1',
    //           name: '是',
    //         },
    //         {
    //           value: '0',
    //           name: '否',
    //         },
    //       ],
    //       md: 4,
    //       sm: 24,
    //       whetherSenior: true,
    //       searchParams: {
    //         fieldType: 'Integer',
    //         fieldParam: 1,
    //         fieldUse: 0,
    //         searchType: 1,
    //         seq: 0,
    //       },
    //     },
    //     {
    //       name: 'recordFlag',
    //       placeholder: '是否补录',
    //       label: '是否补录',
    //       componentType: 'Select',
    //       allowClear: true,
    //       dataSource: [
    //         {
    //           value: '1',
    //           name: '是',
    //         },
    //         {
    //           value: '0',
    //           name: '否',
    //         },
    //       ],
    //       md: 4,
    //       sm: 24,
    //       whetherSenior: true,
    //       searchParams: {
    //         fieldType: 'Integer',
    //         fieldParam: 1,
    //         fieldUse: 0,
    //         searchType: 1,
    //         seq: 0,
    //       },
    //     },
    //     {
    //       name: 'preTime',
    //       placeholder: '预计',
    //       label: '预计时间',
    //       componentType: 'RangePicker',
    //       allowClear: true,
    //       md: 8,
    //       sm: 24,
    //       whetherSenior: true,
    //       searchParams: {
    //         fieldType: 'DateRange',
    //         fieldParam: 0,
    //         fieldUse: 0,
    //         isSearch: 0,
    //         searchType: 0,
    //         seq: 0,
    //         rangeName: ['preBeginTime', 'preFinishTime'],
    //       },
    //     },
    //     {
    //       name: 'realTime',
    //       placeholder: '实际',
    //       label: '实际时间',
    //       componentType: 'RangePicker',
    //       allowClear: true,
    //       md: 8,
    //       sm: 24,
    //       whetherSenior: true,
    //       searchParams: {
    //         fieldType: 'DateRange',
    //         fieldParam: 0,
    //         fieldUse: 0,
    //         isSearch: 0,
    //         searchType: 0,
    //         seq: 0,
    //         rangeName: ['realBeginTime', 'realFinishTime'],
    //       },
    //     },
    //     {
    //       name: 'ownPhone',
    //       placeholder: '联系人电话',
    //       label: '联系人电话',
    //       componentType: 'Input',
    //       allowClear: true,
    //       md: 4,
    //       sm: 24,
    //       whetherSenior: true,
    //       searchParams: {
    //         fieldType: 'String',
    //         fieldParam: 0,
    //         fieldUse: 0,
    //         searchType: 0,
    //         seq: 0,
    //       },
    //     },
    //     {
    //       name: 'ownTime',
    //       placeholder: '申请',
    //       label: '申请时间',
    //       componentType: 'RangePicker',
    //       allowClear: true,
    //       md: 8,
    //       sm: 24,
    //       whetherSenior: true,
    //       searchParams: {
    //         fieldType: 'Date',
    //         fieldParam: 0,
    //         fieldUse: 0,
    //         isSearch: 0,
    //         searchType: 0,
    //         seq: 0,
    //       },
    //     },
    //     {
    //       name: 'busiDepartmentID',
    //       placeholder: '业务部门',
    //       label: '业务部门',
    //       componentType: 'TreeSelect',
    //       dataSource: dutyIdList,
    //       allowClear: true,
    //       md: 4,
    //       sm: 24,
    //       whetherSenior: true,
    //       searchParams: {
    //         fieldType: 'String',
    //         fieldParam: 0,
    //         fieldUse: 0,
    //         searchType: 0,
    //         seq: 0,
    //       },
    //     },
    //     {
    //       name: 'cancelTime',
    //       placeholder: '作废',
    //       label: '作废时间',
    //       componentType: 'RangePicker',
    //       allowClear: true,
    //       md: 12,
    //       sm: 24,
    //       whetherSenior: true,
    //       searchParams: {
    //         fieldType: 'Date',
    //         fieldParam: 0,
    //         fieldUse: 0,
    //         isSearch: 0,
    //         searchType: 0,
    //         seq: 0,
    //       },
    //     },
    //     {
    //       name: 'cancelType',
    //       placeholder: '作废类型',
    //       label: '作废类型',
    //       componentType: 'Select',
    //       allowClear: true,
    //       dataSource: cancelTypeList,
    //       md: 4,
    //       sm: 24,
    //       whetherSenior: true,
    //       searchParams: {
    //         fieldType: 'String',
    //         fieldParam: 1,
    //         fieldUse: 0,
    //         searchType: 1,
    //         seq: 0,
    //       },
    //     },
    //     {
    //       name: 'cancelReason',
    //       placeholder: '作废原因',
    //       label: '作废原因',
    //       componentType: 'Input',
    //       allowClear: true,
    //       md: 4,
    //       sm: 24,
    //       whetherSenior: true,
    //       searchParams: {
    //         fieldType: 'String',
    //         fieldParam: 0,
    //         fieldUse: 0,
    //         searchType: 0,
    //         seq: 0,
    //       },
    //     },
    //     {
    //       name: queryTypeObj?.params,
    //       placeholder: '权限参数',
    //       label: '权限参数',
    //       componentType: 'QueryParams',
    //       allowClear: true,
    //       md: 6,
    //       sm: 24,
    //       whetherSenior: false,
    //       searchParams: {
    //         fieldType: 'String',
    //         fieldParam:
    //           queryTypeObj?.params == 'ownCompanyID' ? 5 : queryTypeObj?.params == 'ownDepartmentID' ? '4' : queryTypeObj?.params == 'ownerID' ? '2' : '3',
    //         fieldUse: 0,
    //         searchType: 2,
    //         seq: 0,
    //       },
    //     },
    //     {
    //       name: 'sealTime',
    //       placeholder: '提醒时间',
    //       label: '提醒时间',
    //       componentType: 'QueryParams',
    //       allowClear: true,
    //       md: 6,
    //       sm: 24,
    //       whetherSenior: false,
    //       searchParams: {
    //         fieldType: 'Date',
    //         fieldParam: 0,
    //         fieldUse: 0,
    //         isSearch: 0,
    //         searchType: 0,
    //         seq: 0,
    //       },
    //     },
    //     {
    //       name: 'changeFlag',
    //       placeholder: '是否变更',
    //       label: '是否变更',
    //       componentType: 'QueryParams',
    //       allowClear: true,
    //       md: 6,
    //       sm: 24,
    //       whetherSenior: false,
    //       searchParams: {
    //         fieldType: 'Integer',
    //         fieldParam: 1,
    //         fieldUse: 0,
    //         searchType: 1,
    //         seq: 0,
    //       },
    //     },
    //   ];
    // };

    // const getSearchChild = (loadMdicMapList: Record<string, any>): ManageCommonAPI.ISearchList => {
    //   // 合同状态
    //   const stateList = getSelectDataCommon(loadMdicMapList?.[`${getTenantID()}${ILoadMapTypeAll.CONTRACT_STATE}`], 'name', 'id');

    //   // 支付方式
    //   const payStyleList = getSelectDataCommon(loadMdicMapList?.[`${getTenantID()}${ILoadMapTypeAll.PAYMENT_STYLE}`], 'name', 'id');

    //   return [
    //     {
    //       name: 'contractName',
    //       placeholder: '合同名称',
    //       label: '合同名称',
    //       componentType: 'Input',
    //       allowClear: true,
    //       md: 4,
    //       sm: 24,
    //       whetherSenior: false,
    //       searchParams: {
    //         fieldType: 'String',
    //         fieldParam: 0,
    //         fieldUse: 0,
    //         searchType: 0,
    //         seq: 0,
    //       },
    //     },
    //     {
    //       name: 'contractCode',
    //       placeholder: '合同编号',
    //       label: '合同编号',
    //       componentType: 'Input',
    //       allowClear: true,
    //       md: 4,
    //       sm: 24,
    //       whetherSenior: false,
    //       searchParams: {
    //         fieldType: 'String',
    //         fieldParam: 0,
    //         fieldUse: 0,
    //         searchType: 0,
    //         seq: 0,
    //       },
    //     },
    //     {
    //       name: 'state',
    //       placeholder: '合同状态',
    //       label: '合同状态',
    //       componentType: 'Select',
    //       allowClear: true,
    //       dataSource: stateList,
    //       md: 4,
    //       sm: 24,
    //       whetherSenior: false,
    //       searchParams: {
    //         fieldType: 'String',
    //         fieldParam: 1,
    //         fieldUse: 0,
    //         searchType: 1,
    //         seq: 0,
    //       },
    //     },
    //     {
    //       name: 'payStyle',
    //       placeholder: '支付方式',
    //       label: '支付方式',
    //       componentType: 'Select',
    //       allowClear: true,
    //       dataSource: payStyleList,
    //       md: 4,
    //       sm: 24,
    //       whetherSenior: false,
    //       searchParams: {
    //         fieldType: 'String',
    //         fieldParam: 1,
    //         fieldUse: 0,
    //         searchType: 1,
    //         seq: 0,
    //       },
    //     },

    //     // {
    //     //   name: queryTypeObj?.params,
    //     //   placeholder: '权限参数',
    //     //   label: '权限参数',
    //     //   componentType: 'QueryParams',
    //     //   allowClear: true,
    //     //   md: 6,
    //     //   sm: 24,
    //     //   whetherSenior: false,
    //     //   searchParams: {
    //     //     fieldType: 'String',
    //     //     fieldParam: 5,
    //     //     fieldUse: 0,
    //     //     searchType: 1,
    //     //     seq: 0,
    //     //   },
    //     // },
    //     // {
    //     //   name: "pID",
    //     //   placeholder: '合同ID',
    //     //   label: '合同ID',
    //     //   componentType: 'QueryParams',
    //     //   allowClear: true,
    //     //   md: 6,
    //     //   sm: 24,
    //     //   whetherSenior: false,
    //     //   searchParams: {
    //     //     fieldType: 'String',
    //     //     fieldParam: 5,
    //     //     fieldUse: 0,
    //     //     searchType: 1,
    //     //     seq: 0,
    //     //   },
    //     // },
    //   ];
    // };

    // /** 提醒记录查询 */
    // const getContractUrgeSearchConfig = (queryTypeObj: Record<string, any>) => {
    //   return [
    //     {
    //       name: 'contractID',
    //       placeholder: '合同ID',
    //       label: '合同ID',
    //       componentType: 'Input',
    //       allowClear: true,
    //       md: 4,
    //       sm: 24,
    //       whetherSenior: false,
    //       searchParams: {
    //         fieldType: 'String',
    //         fieldParam: 0,
    //         fieldUse: 0,
    //         searchType: 0,
    //         seq: 0,
    //       },
    //     },
    //     {
    //       name: 'handleStyle',
    //       placeholder: '提醒/只会',
    //       label: '提醒/只会',
    //       componentType: 'QueryParams',
    //       md: 4,
    //       sm: 24,
    //       whetherSenior: false,
    //       searchParams: {
    //         fieldType: 'Integer',
    //         fieldParam: 1,
    //         fieldUse: 0,
    //         searchType: 1,
    //         seq: 0,
    //       },
    //     },
    //     {
    //       name: queryTypeObj?.params,
    //       placeholder: '权限参数',
    //       label: '权限参数',
    //       componentType: 'QueryParams',
    //       allowClear: true,
    //       md: 6,
    //       sm: 24,
    //       whetherSenior: false,
    //       searchParams: {
    //         fieldType: 'String',
    //         fieldParam: queryTypeObj?.params == 'ownerID' ? '2' : '3',
    //         fieldUse: 0,
    //         searchType: 2,
    //         seq: 0,
    //       },
    //     },
  ];
};

export { getSearchList };
